function Promise(executor) {
    // 添加属性
    this.PromiseState = 'pending'
    this.PromiseResult = null
    // 声明一个属性
    this.callbacks = []
    const self = this

    // resolve函数
    function resolve(data) {
        // 判断
        if (self.PromiseState !== 'pending') {
            return
        }
        // 1. 修改对象的状态 promiseState
        self.PromiseState = 'fulfilled'
        // 2. 设置对象的结果值 promiseResult
        self.PromiseResult = data
        // 调用成功的回调函数 
        self.callbacks.forEach(item => {
            item.onResolved(data)
        })

    }
    // reject函数
    function reject(data) {
        // 判断
        if (self.PromiseState !== 'pending') {
            return
        }
        // 1. 修改对象的状态 promiseState
        self.PromiseState = 'rejected'
        // 2. 设置对象的结果值 promiseResult
        self.PromiseResult = data
        // 调用成功的回调函数 
        self.callbacks.forEach(item => {
            item.onRejected(data)
        })
    }
    try {
        // 同步调用 执行器函数
        executor(resolve, reject)
    } catch (e) {
        // 修改promise对象的状态为 失败
        reject(e)
    }
}

// 添加 then 方法
Promise.prototype.then = function (onResolved, onRejected) {
    // 调用回调函数 主要还是看 PromiseState
    if (this.PromiseState === 'fulfilled') {
        onResolved(this.PromiseResult)
    }
    if (this.PromiseState === 'rejected') {
        onRejected(this.PromiseResult)
    }
    // 判断pending 状态
    if (this.PromiseState === 'pending') {
        // 保存回调函数
        this.callbacks.push({
            onResolved,
            onRejected
        })
    }
}